/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package API_Db;

import domain.Utilisateur;

/**
 *
 * @author Damador
 */
public interface IAPI_Db_Utilisateur {
    
    /**
     * Permet d'inscrire un utilisateur dans la base de données.
     * @param user : objet de type Utilisateur
     * @return 
     */
    public int inscrireDB(Utilisateur user)  throws Exception;
    
    /**
     * Permet d'identifier un utilisateur
     * @param login
     * @param mdp
     * @return objet de type Utilisateur
     */
    public Utilisateur identifierDB(String login, String mdp)  throws Exception;
    
    /**
     * Permet de modifier les parametres d'un utilisateur dans la base de données
     * @param utilisateur
     * @return int
     */
    public int modifierProfilDB(Utilisateur utilisateur) throws Exception;
    
    
    
    /**
     * Permet de recuperer un objet utilisateur via son id
     * @param id_utilisateur
     * @return objet Utilisateur
     */
    public Utilisateur getUtilisateurParId(int id_utilisateur) throws Exception;
    
    /**
     * Mise a jour de la date de dernière connexion
     * @return Etat de la requete
     */
    public int majDateDerniereConnexionDB(Utilisateur user) throws Exception;
    
    /**
     * Permet de renvoyer le mot de passe a l'utilisateur pas mail en cas de perte
     * @param mail
     * @return int
     */
    public Utilisateur recupererMotDePass(String mail) throws Exception;
    
    /**
     * Permet de modifier l'etat de l'utilisateur (en cas de fermeture du compte les informations
     * seront gardees)
     * @param id_utilisateur
     * @param etat
     * @return int
     */
    public int changeEtatUtilisateurDB(int id_utilisateur, int etat) throws Exception;
    
    /**
     * Permet de creer le compte qui contiendra l'argent.
     * @param idUtilisateur
     * @return int
     */
    public int creerCompteDB(int idUtilisateur) throws Exception;
    
    /**
     * On test si le login existe dans la base de donnees
     * @param login
     * @param id_utilisateur
     * @return
     * @throws Exception 
     */
    public boolean loginExiste(String login, int id_utilisateur) throws Exception;
    
   /**
     * Permet de tester si l email existe dans la base
     * @param email
     * @param id_utilisateur
     * @return
     * @throws Exception 
     */
    public boolean emailExiste(String email, int id_utilisateur) throws Exception;
    
    /**
     * Permet de testesr si l id de l utilisateur existe dans la base
     * @param id_utilisateur
     * @return boolean
     * @throws Exception 
     */
    public boolean idUtilisateurExisteCompte(int id_utilisateur) throws Exception;
    
    /**
     * Test si l utilisateur est le meilleur encherisseur sur au moins une seance
     * @param id_utilisateur
     * @return
     * @throws Exception 
     */
    public boolean estMeilleurEncherisseur(int id_utilisateur) throws Exception;
    
    /**
     * Test si l utilisateur est le vendeur d une seance en cours
     * @param id_utilisateur
     * @return
     * @throws Exception 
     */
    public boolean estVendeurEnCours(int id_utilisateur) throws Exception;
}
